#pragma once
#include "SystemView.h"
#include "Sorter.h"
#include "TimeSliceCalculations.h"

class GradientDescent
{
	SystemView* sys;
	Sorter* sorter;
	vector<ExtentStatsAlgo*> *ssd, *fc, *sata;		// vector of the extents in each device
	DeviceData *ssdDevice, *fcDevice, *sataDevice;		// different devices
	TimeSliceCalculations* timeCalc;

public:
	GradientDescent(SystemView* s);
	~GradientDescent(void);

	vector<ExtentStatsAlgo*>* Run(vector<ExtentStatsAlgo*>* sortedExtents, int timeSliceCount, double g, int ssdSpace, int fcSpace, int sataSpace, int time);

};

